Rubyのdo…endと{…}の違い
慣習的に、ブロックを複数行で書くときはdoとendを使い、1行で書くときは{と}を使うことが多いです。
(
#ゼロからわかる_Ruby_超入門
より)
#プロを目指す人のためのRuby入門
でも同様の記述あり
ブロック付きメソッド呼び出し
do...end
は、結びつきが弱く、
{...}
は結びつきが強い
code:sample.rb
# do...end のブロックは渡されない
p
1, 3, 2, "2", "3"
.uniq do |n| n.to_s end # =>
1, 3, 2, "2", "3"
# 引数を()で囲まない場合、 do...end が無視されたような解釈になる
p
1, 3, 2, "2", "3"
.uniq # =>
1, 3, 2, "2", "3"
p
1, 3, 2, "2", "3"
.uniq! # => nil
# ブロックを確実に渡す書き方
p
1, 3, 2, "2", "3"
.uniq { |n| n.to_s } # =>
1, 3, 2
p (
1, 3, 2, "2", "3"
.uniq do |n| n.to_s end) # =>
1, 3, 2
result =
1, 3, 2, "2", "3"
.uniq do |n| n.to_s end
p result # =>
1, 3, 2
参考URL
Rubyのパラメータと引数の対応付けを理解する(前編)|TechRacho by BPS株式会社
ブロックをdo…endで書くか{…}で書くかにより挙動が変わる例 - Qiita
#Rubyのブロックを学ぶ